package anli;

import java.util.Random;
import java.util.Scanner;

public class anli11 {
    public static void main(String[] args) {
    int[] userNumbers=userSelectNumber();
    System.out.println("您投入的号码");
    printArray(userNumbers);

   int [] luckNumber= createLuckNumbers();
   System.out.println("中奖的号码");
   printArray(luckNumber);

   judge(userNumbers,luckNumber);
    }

    public static void  printArray(int [] arr){
        System.out.println("[");
        for (int i = 0; i < arr.length; i++) {
            System.out.println(i== arr.length-1?arr[i]:arr[i]+",");
        }
        System.out.println("]");
    }

    public static int[] userSelectNumber() {
        int[] numbers = new int[6];
         //numbers=[0,0,0,0,0,0]
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < numbers.length - 1; i++) {

            while (true) {
                System.out.println("请输入您第" + (i + 1) + "个红球号码(1-33之间 不能重复):");
                int number = scanner.nextInt();

                //先判断用户输入的红球号码是否在1-33之间
                if (number < 1 || number > 33) {
                    System.out.println("对不起，您输入的红球号码不在1-33之间,请确认！");
                }else {
                    //号码是在1-33之间，接着还要继续判断这个号码是否重复，不重复才可以使用
                      if(exist(numbers,number)) {
                          System.out.println("对不起，您当前输入的红球号码前面选择过，重复了，请确认！");
                      }else {
                          //number记住的这个号码没有重复了,就可以使用了
                          numbers[i]=number;
                          break; //结束当前投注，结束了当前死循环
                      }
                }
            }
        }
        //投注最后一个篮球号码
        while (true) {
            System.out.println("请输入最后1个篮球号码(1-16)");
            int number=scanner.nextInt();
            numbers[5]=number;
            if(number<1 || number>16){
                System.out.println("对不起,您输入的篮球号码范围不对!");
            }else {
                numbers[5]=number;
                break; //篮球号码录入成功，结束死循环
            }
        }
        return  numbers;
    }

    private static boolean exist(int[] numbers, int number) {
        //需求: 判断number这个数字是否在number数组中存在1
        //numbers=[12,25,18,0,0,0,0]
        //number =25
        for (int i = 0; i < numbers.length; i++) {
            if(numbers[i]==0){
                break;
            }
            if(numbers[i]==number){
                return true;
            }
        }
              return  false;
    }


    /*2.设计一个方法，随机一组中奖号码出来（6个红球号码，1个篮球号码）*/
    public static int[] createLuckNumbers() {
        //1.创建一个整型数组，用于存储7个号码
        int[] numbers = new int[7];
        Random r = new Random();
        //2.遍历前6个位置处，依次随机一个红球号码存入（1-33 不重复）
        for (int i = 0; i < numbers.length - 1; i++) {

            //3.为当前这个位置随机一个红球号码出来存入
            while (true) {
                int number = (r.nextInt(33) + 1);

                //4.判断这个号码是否出现过(红球号码不能重复)
                if (!exist(numbers, number)) {
                    //说明number这个号码重复了
                    //number不重复
                    numbers[i] = number;
                    break;//结束循环，代表找到了当前伪装的一个不重复的红球号码
                }
            }
        }
        numbers [6] = r.nextInt(33) + 1;
        return  numbers;
    }

    /*3.传入两组号码，用来判断用户投注号码的中奖情况，并输出*/
    //userNumbers 用户投注的号码
    //luckNumber  系统随机出来的中奖号码
    public static void  judge(int[] userNumbers,int[] luckNumbers){
        //userNumbers=[12,14,16,18,23,26,8]
        //luckNumber=[16,17,18,19,26,32,8]

        //分别定义2个变量用于记住红球命中了几个以及篮球命中了几个
        int redCount =0;
        int blueCount =0;

        //先判断红球命中的数量
        //遍历用户投注的号码前6个红球
        for (int i = 0; i < userNumbers.length-1; i++) {
            //userNumber[i]
            //开始遍历中奖号码的前6个红球号码，看用户当前选择的这个号码是否命中了
            for (int j = 0; j <luckNumbers.length-1; j++) {
                  if(userNumbers[i]==luckNumbers[j]){
                      redCount++;
                      break;
                  }

            }
        }

        //3.判断篮球是否命中
        blueCount = userNumbers[5] == luckNumbers[6] ? 1 : 0;
        System.out.println("你命中的红球数量"+redCount);
        System.out.println("你命中的篮球数量"+blueCount);

        //判断中奖详情，并输出结果
        if(redCount==6 && blueCount==1){
           System.out.println("恭喜您,中奖10000万");
        }else  if(redCount==6 && blueCount==0){
            System.out.println("恭喜您,中奖50万");
        }else  if(redCount==5 && blueCount==1){
            System.out.println("恭喜您,中奖3000元");
        }else  if(redCount==5 && blueCount==0 || redCount==4 && blueCount==1){
            System.out.println("恭喜您,中奖200元");
        }else  if(redCount==4 && blueCount==0 || redCount==3 && blueCount==1){
            System.out.println("恭喜您,中奖10元");
        }else  if(redCount<3 && blueCount==1){
            System.out.println("恭喜您,中奖5元");
        }else {
            System.out.println("没中奖");
        }
    }

}
